Can they be reborn as just another virtual loop? or as a series of individual sound-effects in normal channels? It's really not that big of a deal if they're occasionally preempted by a closing door, is it?
They should, however, preempt an ambient loop (or kill the previous one when a new one starts..)
~- note that ghostCalls() sets volume of sound 5 directly
AFTER: now, it scans for any channels containing gLastCall and dims them down..
~- suspendSounds() also specifies sound 5. Should be able to delete these references..
~- mouseDown( script "headgear on" ), too.. this shuts off domain entry sounds; search-and-destroy instead, by dropping volume in the channel of gLastCall (IF it's still playing there!)
- watch for weird consequences of #nobody in queue..
~- playDomainEntrySound() checks soundBusy(5).. perhaps instead remember (gLastCall) the most recent call and check its channel instead? If it's not in #soundChannels anymore, then someone else has grabbed its channel, so the coast is clear..
~- playDES() also sets the vol of 5 to preset vol (for game reentry); instead, set vol explicitly as each call plays?? based on getState( oStoryteller, #ghostCallVol )...
~- finally, playDES() uses "sound playfile" directly to play the calls; switch to assignSound() or soundEffect()
~- assignSound() can't directly deal with a request for a specific sound-file; but now it can..